
from mcp.server.fastmcp import FastMCP

#定义一个MCP服务器
mcp = FastMCP("MCP Server")

@mcp.tool(name="add_tool",description="两个整数相加")
def add_tool(x:int,y:int):
    """
    这个函数用于计算两个整数的和
    Args:
        x (int): 第一个整数
        y (int): 第二个整数
    Returns:
        int: 两个整数的和
    """
    print("===调用了add_tool ===")
    return x+y

@mcp.tool()
def sub_tool(x:int,y:int):
    """
    这个函数用于计算两个整数的差
    Args:
        x (int): 第一个整数
        y (int): 第二个整数
    Returns:
        int: 两个整数的差
    """
    print("===调用了sub_tool ===")
    return x-y

#定义资源类
@mcp.resource(
    uri="file:///fetch_book.txt",
    name="fetch_book",
    description="获取图书信息",
    mime_type="text/plain",
)
def fetch_book_resource():
    """
    读取本地文件books.txt
    """
    print("==请求资源：fetch_book_resource")
    with open("books.txt", "r", encoding="utf-8") as file:
        return file.read()

@mcp.prompt()
def notify_prompt(notify:str):
    """
    模拟发送通知
    :param notify: 通知内容
    """
    print("==请求资源：notify_prompt")
    return {
        "role": "user",
        "content": f"""
                    这是活动通知内容：“{notify}”，请按标准格式整理通知要点，规则如下：
                    提取活动关键信息。
                    每个信息点按以下格式总结：
                    活动主题：需体现活动核心内容与目的
                    参与对象：明确可参加的人群或范围
                    时间安排：活动开始至结束的具体时段
                    举办地点：活动实际开展的地址
                    报名方式：参与活动的申请途径及截止时间
                    总结语言需简洁明了，避免使用复杂句式。
         """
        }



if __name__ == "__main__":
    print("MCP Server is running...")

    #声明使用stdio传输协议,默认是sse协议
    mcp.run(transport="sse")
    #mcp.run(transport="stdio")